package com.zedeff.twittererer.utils; import com.zedeff.twittererer.models.TimelineItem; import com.zedeff.twittererer.models.User; import com.twitter.sdk.android.core.models.Tweet; import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.Hours; import org.joda.time.Minutes; import org.joda.time.Seconds; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; public final class TimelineConverter { public static final String DATE_TIME_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy"; private TimelineConverter() {} public static List<TimelineItem> fromTweets(List<Tweet> tweets, DateTime now) { List<TimelineItem> timelineItems = new ArrayList<>(); for (Tweet t : tweets) { User u = new User(t.user.name, t.user.screenName, t.user.profileImageUrl); timelineItems.add(new TimelineItem(TimelineConverter.dateToAge(t.createdAt, now), t.text, u)); } return timelineItems; } private static String dateToAge(String createdAt, DateTime now) { if (createdAt == null) { return ""; } DateTimeFormatter dtf = DateTimeFormat.forPattern(DATE_TIME_FORMAT); try { DateTime created = dtf.parseDateTime(createdAt); if (Seconds.secondsBetween(created, now).getSeconds() < 60) { return Seconds.secondsBetween(created, now).getSeconds() + "s"; } else if (Minutes.minutesBetween(created, now).getMinutes() < 60) { return Minutes.minutesBetween(created, now).getMinutes() + "m"; } else if (Hours.hoursBetween(created, now).getHours() < 24) { return Hours.hoursBetween(created, now).getHours() + "h"; } else { return Days.daysBetween(created, now).getDays() + "d"; } } catch (IllegalArgumentException e) { return ""; } } }